﻿<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <title>Development Agenda</title>
    <style type="text/css">
        body
        {
            text-align: center;
            margin: 0;
            padding: 0;
            background-color: #363942;
            color: #382513;
        }
        
        #container
        {
            margin: 15px auto;
            text-align: left;
            background-color: #FFFFFF;
            border: 1px solid #4B1E18;
            padding: 0px;
            width: 850px;
        }
        
        #header
        {
            min-height: 80px;
            border-bottom: 1px solid #284907;
            margin-bottom: 15px;
            padding: 15px;
        }
        
        #header h1
        {
            position: relative;
            vertical-align: center;
            color: #382513;
            margin-bottom: -10px;
        }
        
        .subheading
        {
            color: #284907;
        }
        
        #content
        {
            padding: 0 15px;
        }
        
        #footer
        {
            clear: both;
            border-top: 1px solid #284907;
            padding: 15px;
            margin-top: 15px;
        }
    </style>
</head>
<body>
    <div id="container">
        <div id="header">
            <h1>
                README - Dataglot</h1>
            <p class="subheading">
                A library to thinly wrap ordinary ADO.NET</p>
        </div>
        <!-- /header -->
        <div id="content">
            <h2>
                IN PROGRESS: System.Data.Common</h2>
            <p>
                This library hopes to provide the boilerplate for the System.Data.Common way of
                dealing with connected and disconnected data. Some common issues to be solved:
            </p>
            <ul>
                <li>active record patterns (CRUD for tables as if rows were objects with just properities)</li>
                <li>connection, command and transaction setup and teardown</li>
                <li>parameterization</li>
                <li>single to multi-statement batch conversion for MsAccess support, which supports
                    only single statement batches</li>
                <li>named to positional parameter syntax support, since some DB only support positional.</li>
                <li>TODO: View Materialiation (for dbs that don't support views)</li>
            </ul>
            
            <h2>
                Provider Specific Helper Code
            </h2>
            <p>
                The provider pattern doesn't change that the databases really are different from each other.  If, for example,
                you execute all commands in single batches for MS-Access compatibility, then performance is dramatically worse.
                A good data access API should detect when provider specific features are available and use them, only falling back
                on the least common denominator when it has to.
                 The MsAccess, MsSql namespaces will provide boilerplate code for database detection,
                creation, etc.
            </p>
            <h2>
                Trace and Diagnostics</h2>
            <p>
                Good trace should provide the following:
            </p>
            <ul>
                <li>Capture of all SQL sent to database in a (nearly) copy & execute format</li>
                <li>Pretty print of DbCommand, DbParameters, etc.</li>
                <li>Pretty print of DbDataReader, and other large data structures</li>
                <li>Performance trace (start/stop) for API and for the Sql execution</li>
            </ul>
            <h2>
                TODO: Update to Dapper</h2>
            <p>
                It looks like the DbCommands can be swapped out with Dapper commands.
            </p>
        </div>
        <!-- /content -->
        <div id="footer">
            <p>
                Copyright (c) 2011 Matthew D Martin<br />
                MIT or MS-PL License as you elect, please see root directory for text of licenses.</p>
        </div>
        <!-- /footer -->
        <!--
Credits for HTML template: David Rodriguez
http://www.wpdfd.com/issues/86/simple_css_creating_more_readable_text/
-->
    </div>
    <!-- /container -->
</body>
</html>
